#include <iostream>
#include <string>
#include "httplib.h"


void Holle(const httplib::Request &req, httplib::Response &res)
{
    res.set_content("Holle world!", "text/plain");//响应报头
    res.status = 200;//响应状态码
}

void Number(const httplib::Request &req, httplib::Response &res)
{
    auto num = req.matches[1];//0表示的是整个path的内容,往后的下标中保存的是捕捉的数据
    res.set_content(num, "text/plain");
    res.status = 200;
}

void Multipart(const httplib::Request &req, httplib::Response &res)
{
    auto ret = req.has_file("file");//是否有这个文件
    if(ret == false)
    {
        std::cout << "not file upload\n";
        res.status=400;
        return;
    }

    const auto &file = req.get_file_value("file");
    res.body.clear();
    res.body = file.filename;//文件名称
    res.body += "\n";
    res.body += file.content;//文件内容
    res.set_header("Content-Type", "text/plain");
    res.status = 200;

}

int main()
{
    httplib::Server server;//实例化一个Server类用于搭建服务器

    server.Get("/hi", Holle);//为一个/hi的GET请求构建一个映射函数Holle
    server.Get(R"(/number/(\d+))", Number);
    server.Post("/multipart", Multipart);
    server.listen("172.26.7.114", 9999);//"0.0.0.0"监控所有的网卡

    return 0;
}